package com.offcn.number;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.spi.LocaleServiceProvider;

/*
给出一个数XX，−10^5≤X≤10^5,−10^5≤X≤10^5，可以随意改变XX中数字的顺序，问可以得到的最小数是多少。要求得到的数不允许有前导0。

要求得到的数不允许有前导0。
 */
public class Test01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数：");
        int num = sc.nextInt();

        int min = getMin(num);
        System.out.println("min = " + min);

        System.out.println(getNums(num));

        //获取CPU的核心数
        int processors = Runtime.getRuntime().availableProcessors();
        System.out.println("processors = " + processors);
    }

    private static int getMin(int num) {
        if(num == 0) {
            return 0;
        }
        ArrayList<Integer> arrayList = new ArrayList<>();
        //求数字的各个位上的数字
        while (num != 0) {
             arrayList.add(0, num % 10);
             num /= 10;
        }
        Collections.sort(arrayList);
        System.out.println(arrayList);
        int res = 0;
        for (int i = 0; i < arrayList.size(); i++) {
                res = res * 10 + arrayList.get(i);
        }

        return res;
    }
    //求数字的每个位置上的数字
    public static ArrayList<Integer> getNums(int num) {
        ArrayList<Integer> list = new ArrayList<>();
        //判断数字是否为0
        if(num == 0) {
            list.add(0,0);
        }

        while (num != 0) {
            num = Math.abs(num);
            list.add(0,num % 10 );
            num /= 10;
        }
        Collections.sort(list);
        return list;
    }
}


